package com.yiyibook.util;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.UUID;

/**
 * 文件上传 工具类
 *
 * @author yi.wu 2019-11-04 09:52:36
 */
@Service
public class FileUploadUtil {

    /**
     * 虚拟 访问路径
     */
    @Value("${file.staticAccessPath}")
    private String staticAccessPath;
    /**
     * 文件上传 绝对路径
     */
    @Value("${file.uploadFolder}")
    private String uploadFolder;

    /**
      * 上传文件 到 指定路径 下
      * @param file 上传的文件
      * @return com.yiyibook.util.Msg
      * @author yi.wu 2019-11-04 10:52:30
      */
    public Msg uploadFile(MultipartFile file){
        if (file.isEmpty()) {
            return Msg.fail().add("errorMsg","未选择文件！");
        }
        // 文件名
        String fileName = file.getOriginalFilename();
        // 后缀名
        String suffixName = fileName.substring(fileName.lastIndexOf("."));
        // 上传后的路径
        String filePath = uploadFolder;
        // 新文件名
        fileName = UUID.randomUUID().toString().replaceAll("-","") + suffixName;
        File dest = new File(filePath + fileName);
        if (!dest.getParentFile().exists()) {
            dest.getParentFile().mkdirs();
        }
        try {
            file.transferTo(dest);
        } catch (IOException e) {
            e.printStackTrace();
            return Msg.fail().add("errorMsg", "上传图片异常，请重试，或联系技术人员！" + e );
        }
        String fileTrueName = "/" + staticAccessPath.substring(0, staticAccessPath.indexOf("/")+1) + fileName;
        return Msg.success().add("fileTrueName",fileTrueName);
    }

}
